package com.oceansoft.mobile.biz.admin.service;

import java.util.Date;
import java.util.List;

import com.oceansoft.mobile.biz.admin.entity.BasesiteArticlePic;
import com.oceansoft.mobile.biz.admin.entity.NewsArticle;
import com.oceansoft.mobile.biz.api.entity.News;
import com.oceansoft.mobile.common.base.entity.Pager;
import com.oceansoft.mobile.common.base.entity.Query;
import com.oceansoft.mobile.common.base.entity.Result;

public interface INewsService {

	/**
	 * 加载全部的新闻
	 * 
	 * @param merchantId
	 * @param query
	 * @return
	 */
	public Pager<NewsArticle> loadNewsByPage(long merchantId, Query query);

	/**
	 * 分页加载推送的新闻
	 * 
	 * @param merchantId
	 * @param query
	 * @return
	 */
	public Pager<News> loadPushNewsByPage(Query query);

	/**
	 * 保存推送的新闻
	 * 
	 * @param merchantId
	 * @param query
	 * @return
	 */
	public Result savePushNewsByPage(int id,NewsArticle news);

	/**
	 * 保存或者修改新闻
	 * 
	 * @param art
	 * @return
	 */
	public Result saveOrUpdate(NewsArticle art);
	
	/**
	 * 保存新增的新闻
	 * 
	 * @param art
	 * @return
	 */
	public Result saveArticle(NewsArticle art); 
	
	/**
	 * 根据新闻的ID删除新闻
	 * 
	 * @param sid
	 * @return
	 */
	public Result deleteNewsById(long sid);

	/**
	 * 加载图片
	 * 
	 * @param productId
	 * @return
	 */
	public List<BasesiteArticlePic> loadProductPics(long productId);

	/**
	 * 
	 * @return
	 */
	public List<NewsArticle> loadArticles0Pre3Days();

	/**
	 * 头条新闻
	 * 
	 * @param merchantId
	 * @return
	 */
	public NewsArticle loadFirstNews(long merchantId);

	/**
	 * 前台 加载新闻
	 * 
	 * @param merchantId
	 * @return
	 */
	public List<NewsArticle> loadArticlesListByMerchantId(long merchantId);

	/**
	 * 根据ID 加载新闻
	 * 
	 * @param sid
	 * @return
	 */
	public NewsArticle loadNewsById(long sid);
	public List<NewsArticle> loadNewsTime(long sid);
	/**
	 * 设置新闻类型
	 * @param pk
	 * @param prop
	 * @param val
	 * @return
	 */
	public Result updateType(long pk, String prop, String val);

	public List<NewsArticle> loadArticles0PreNDays(int n);

	public List<NewsArticle> loadArticlesByGroupPreNDays( int n);
	/**
	 * 设置定时发送时间
	 * @param sids
	 * @param time
	 * @return
	 */
	public Result sendTime(String sid,Date time);
	
	/**
	 * 列出发布的时间 
	 * @return
	 */
	public List<String> showTimes(int days);

	public List<NewsArticle> newsList(String date);
	/*******增加网址的新闻*******/
	public Result addNewsByUrl(String strURL ,NewsArticle newsArticle ) throws Exception;
	
	/**
	 * 列出未发送的头条新闻
	 * @return
	 */
	public List<NewsArticle> findTopNews();
	
	public List<NewsArticle> findPubTopNews(int count);
	
	public List<NewsArticle> findNewsByTopNews(long pid);
}
